#pragma once

namespace Physics{
	class IPhysicsSystem : public Core::MemTrack{
	public:
		virtual ~IPhysicsSystem(){}

		virtual void step(float step) = 0;

		virtual std::vector<int> rayCast(int sceneId, Utility::Math::Vector<> &from,Utility::Math::Vector<> &dir) = 0;

	protected:
		virtual void update() = 0;

		ThreadPtr m_runThread;
		float m_step;
		bool m_ready;
	};
}

typedef boost::shared_ptr<Physics::IPhysicsSystem> PhysicsSystemPtr;